package com.gimi.cloud.jimi.manage.consumer.feign;

import com.gimi.cloud.jimi.common.utils.reqhead.Response;
import com.gimi.cloud.jimi.dto.app.AdDTO;
import com.gimi.cloud.jimi.dto.app.ColumnDTO;
import com.gimi.cloud.jimi.dto.app.ColumnProdDTO;
import com.gimi.cloud.jimi.dto.app.MajorAdDTO;
import com.gimi.cloud.jimi.manage.consumer.feign.config.FeignMultipartSupportConfig;
import feign.Headers;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * @auther loongs
 * @date 2017/12/27  14:43
 */
@FeignClient(name = "jimi-manage-service" ,configuration = FeignMultipartSupportConfig.class)
public interface AdAndColumnFeignService {

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "column/getColumnList", method = RequestMethod.POST)
    Response getColumnList(ColumnDTO columnDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "column/getPreColumnProdList", method = RequestMethod.POST)
    Response getPreColumnProdList(ColumnDTO columnDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "column/addColumn", method = RequestMethod.POST)
    Response addColumn(ColumnDTO columnDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "column/editColumn", method = RequestMethod.POST)
    Response editColumn(ColumnDTO columnDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "column/gotoEditColumn", method = RequestMethod.POST)
    Response gotoEditColumn(ColumnDTO columnDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "column/deleteColumn", method = RequestMethod.POST)
    Response deleteColumn(ColumnDTO columnDTO);
    /**********************************************************************************************/
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "ad/getAdList", method = RequestMethod.POST)
    Response getAdList(AdDTO adDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "ad/adRelyColumnProd", method = RequestMethod.POST)
    Response adRelyColumnProd(AdDTO adDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "ad/addAd", method = RequestMethod.POST)
    Response addAd(AdDTO adDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "ad/editAd", method = RequestMethod.POST)
    Response editAd(AdDTO adDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "ad/gotoEditAd", method = RequestMethod.POST)
    Response gotoEditAd(AdDTO adDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "ad/deleteAd", method = RequestMethod.POST)
    Response deleteAd(AdDTO adDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "ad/gotoAddAd", method = RequestMethod.POST)
    Response gotoAddAd(AdDTO adDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "ad/publishAd", method = RequestMethod.POST)
    Response publishAd(AdDTO adDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "ad/underAd", method = RequestMethod.POST)
    Response underAd(AdDTO adDTO);

    @Headers({"Content-Type: mutipart/form-data","Accept: application/json"})
    @RequestMapping(value = "/ad/uploadAdFile", method = RequestMethod.POST)
    Response uploadAdFile(MultiValueMap mutipartfiles);
    /**********************************************************************************************/
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "majorAd/addMajorAd", method = RequestMethod.POST)
    Response addMajorAd(MajorAdDTO majorAdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "majorAd/majorAdRelyColumnProd", method = RequestMethod.POST)
    Response majorAdRelyColumnProd(MajorAdDTO majorAdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "majorAd/majorAdRelyColumn", method = RequestMethod.POST)
    Response majorAdRelyColumn(MajorAdDTO majorAdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "majorAd/deleteMajorAd", method = RequestMethod.POST)
    Response deleteMajorAd(MajorAdDTO majorAdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "majorAd/editMajorAd", method = RequestMethod.POST)
    Response editMajorAd(MajorAdDTO majorAdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "majorAd/getMajorAdList", method = RequestMethod.POST)
    Response getMajorAdList(MajorAdDTO majorAdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "majorAd/gotoEditMajorAd", method = RequestMethod.POST)
    Response gotoEditMajorAd(MajorAdDTO majorAdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "majorAd/publishMajorAd", method = RequestMethod.POST)
    Response publishMajorAd(MajorAdDTO majorAdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "majorAd/underMajorAd", method = RequestMethod.POST)
    Response underMajorAd(MajorAdDTO majorAdDTO);

    @Headers({"Content-Type: mutipart/form-data","Accept: application/json"})
    @RequestMapping(value = "/majorAd/uploadMajorAdFile", method = RequestMethod.POST)
    Response uploadMajorAdFile(MultiValueMap mutipartfiles);
    /**********************************************************************************************/

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "columnProd/getColumnProdList", method = RequestMethod.POST)
    Response getColumnProdList(ColumnProdDTO columnProdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "columnProd/addColumnProd", method = RequestMethod.POST)
    Response addColumnProd(ColumnProdDTO columnProdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "columnProd/addBatchColumnProd", method = RequestMethod.POST)
    Response addBatchColumnProd(ColumnProdDTO columnProdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "columnProd/goToaddColumnProd", method = RequestMethod.POST)
    Response goToaddColumnProd(ColumnProdDTO columnProdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "columnProd/goToEditColumnProd", method = RequestMethod.POST)
    Response goToEditColumnProd(ColumnProdDTO columnProdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "columnProd/editColumnProd", method = RequestMethod.POST)
    Response editColumnProd(ColumnProdDTO columnProdDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "columnProd/delColumnProd", method = RequestMethod.POST)
    Response delColumnProd(ColumnProdDTO columnProdDTO);

    @Headers({"Content-Type: mutipart/form-data","Accept: application/json"})
    @RequestMapping(value = "/columnProd/upLoadColumnProdFile", method = RequestMethod.POST)
    Response upLoadColumnProdFile(MultiValueMap mutipartfiles);
}

